부동 소수점(floating point)
소수점이 고정되어 있지 않고 좌우로 움직일 수 있다는 뜻의 표현 방식
고정 소수점(fixed point)과는 달리 소수점을 자유롭게 움직일 수 있어서 표현할 수 있는 수의 범위가 매우 넓다
IEEE 754 표준의 단정밀도(single precision) 부동소수점 형식을 따른다
형식
±(1.가수부)×2^지수부-127
예시
[ 0 00000000 00000000000000000000000 ] ->[ **부호** **지수부** **가수부** ]
부호 부분(1bit): 부호 결정. 0이면 양수, 1이면 음수
지수 부분(8bit): 지수 표현. 이진법으로 표현한다. 양수와 음수를 표현해야 하기 때문에 255까지가 아니라 [-127~128]까지 표현할 수 있다.
가수부 부분(23bit): 가수 표현. 실질적인 숫자. 만약 123,456을 표현한다면 가수는 123456이 된다.
* 가수(假數): 임시로 사용하는 수
부동소수점 변환 단계
- 이진수로 변환 : 9.875(10) = 1001.111(2)
- 정규화 : 1.001111 x 2^3
- 부분 분해
부호 비트 : 0(양수)
지수 : 3 + 127(바이어스(Bias)) = 130 = 100000010(2)
가수 : 001111(1.xxx 지만 1.은 항상 동일하기 때문에 이진수로 변환 후 소수점 아래만 가져옴) - 조합
부호(0) + 지수(10000010) + 001111000...(부족한 비트는 0으로 채움)
최종 32비트 표현: 0 10000010 00111100000000000000000
10진수 변환
- 가수를 소수로 변환
각 비트의 값: 2^-3 + 2^-4 + 2^-5 + 2^-6
계산: 0.125 + 0.0625 + 0.03125 + 0.015625 = 0.234375 - 숨겨진 1 더하기
1 + 0.234375 = 1.234375 - 지수 적용
1,234375 x 2^3 = 9.875
가수 표현
가수는 소수점 아래이기 때문에 각 자리는 앞에서부터 2^-1, 2^-2... 가 된다
즉, 001111 이라면 각 비트의 값은 2^-3 + 2^-4 + 2^-5 + 2^-6 가 된다
이를 계산하면 0.125 + 0.0625 + 0.03125 + 0.015625 = 0.234375가 된다